package com.example.demo.mapper;

import com.example.demo.entity.WorkflowTaskType;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface WorkflowTaskTypeMapper {

    /**
     * 查询所有流程任务映射
     */
    List<WorkflowTaskType> selectAll();

    /**
     * 根据ID查询流程任务映射
     */
    WorkflowTaskType selectById(@Param("id") Long id);

    /**
     * 根据流程ID查询流程任务映射列表
     */
    List<WorkflowTaskType> selectByWorkflowId(@Param("workflowId") Long workflowId);

    /**
     * 根据任务类型ID查询流程任务映射列表
     */
    List<WorkflowTaskType> selectByTaskTypeId(@Param("taskTypeId") Long taskTypeId);

    /**
     * 根据数据源ID查询流程任务映射列表
     */
    List<WorkflowTaskType> selectByDatasourceId(@Param("datasourceId") Long datasourceId);

    /**
     * 插入流程任务映射
     */
    int insert(WorkflowTaskType workflowTaskType);

    /**
     * 批量插入流程任务映射
     */
    int batchInsert(@Param("workflowTaskTypes") List<WorkflowTaskType> workflowTaskTypes);

    /**
     * 更新流程任务映射
     */
    int updateById(WorkflowTaskType workflowTaskType);

    /**
     * 删除流程任务映射
     */
    int deleteById(@Param("id") Long id);

    /**
     * 根据流程ID删除流程任务映射
     */
    int deleteByWorkflowId(@Param("workflowId") Long workflowId);

    /**
     * 根据流程ID和任务类型ID删除流程任务映射
     */
    int deleteByWorkflowIdAndTaskTypeId(@Param("workflowId") Long workflowId, @Param("taskTypeId") Long taskTypeId);

    /**
     * 统计流程任务映射数量
     */
    long count();
}